// 这个文件可以理解为外部的 store 
// 将这个文件集成到 react 中
// 如果 React 构建的项目，推荐使用 state 或者 reducer

let nextId = 0
// 数据
let todos = [
    { id: nextId++, text: '黄焖排骨' }
]
let listeners = []

export const todosStore = {
    addTodo(str) {
        // 修改数据
        todos = [...todos, { id: nextId++, text: str }]
        emitChange()
    },
    subscribe(listener) {
        listeners = [...listeners, listener]

        return () => {
            listeners = listeners.filter(item => item != listener)
        }
    },
    getSnapshot() {
        return todos
    }
}

function emitChange() {
    for (let listener of listeners) {
        listener()
    }
}